#! /bin/bash

#package the project and skip test
mvn package -Dmaven.test.skip=true
mopcodegen=$(pwd)/target/MOPCodeGen-1.0-jar-with-dependencies.jar

# read -i as inputDirectory, -o as outputDirectory

# default path
input_dir="src/main/resources/list"
output_dir="src/main/resources/output"
scale=1

# 解析命令行参数
while getopts ":i:o:s:" opt; do
  case ${opt} in
    i )
      input_dir=$OPTARG
      ;;
    o )
      output_dir=$OPTARG
      ;;
    s )
      scale=$OPTARG
      ;;
    \? )
      echo "invalid option: -$OPTARG" 1>&2
      exit 1
      ;;
    : )
      echo "option -$OPTARG need a parameter" 1>&2
      exit 1
      ;;
  esac
done

echo "input_dir: $input_dir"
echo "output_dir: $output_dir"

# generate main function
./mainf.sh $input_dir $scale

# clean the directory if exists and create java、 cs、 cj output directory
if [ ! -d $output_dir ]; then
  mkdir -p $output_dir/java
  mkdir -p $output_dir/cs
  mkdir -p $output_dir/cj
  mkdir -p $output_dir/cj/src
else
  rm -r $output_dir/*
  mkdir -p $output_dir/java
  mkdir -p $output_dir/cs
  mkdir -p $output_dir/cj
  mkdir -p $output_dir/cj/src
fi

# run mopcodegen for each language
java -cp $mopcodegen com.example.codegen.CodeGenJava -i $input_dir -o $output_dir/java
java -cp $mopcodegen com.example.codegen.CodeGenCSharp -i $input_dir -o $output_dir/cs
java -cp $mopcodegen com.example.codegen.CodeGenCJ -i $input_dir -o $output_dir/cj/src
cp src/main/resources/example.csproj $output_dir/cs